#pragma once
#ifndef SMPPMESSAGEDELIVERYRESPONSETLVS_HPP
#define SMPPMESSAGEDELIVERYRESPONSETLVS_HPP

#include "SMPPAdditionalStatusInfoText.hpp"
#include "SMPPDeliveryFailureReason.hpp"
#include "SMPPNetworkErrorCode.hpp"

namespace smpp{
namespace pdu{

class SMPP_DLLPRFX MessageDeliveryResponseTLVs{
protected:
	AdditionalStatusInfoText *_AdditionalStatusInfoText;
	DeliveryFailureReason *_DeliveryFailureReason;
	NetworkErrorCode *_NetworkErrorCode;
public:
	MessageDeliveryResponseTLVs(
		const AdditionalStatusInfoText *nAdditionalStatusInfoText = 0,
		const DeliveryFailureReason *nDeliveryFailureReason = 0,
		const NetworkErrorCode *nNetworkErrorCode = 0);

	MessageDeliveryResponseTLVs(
		const MessageDeliveryResponseTLVs &);

	~MessageDeliveryResponseTLVs();

	void setAdditionalStatusInfoText(
		const AdditionalStatusInfoText *);

	const AdditionalStatusInfoText *
		getAdditionalStatusInfoText() const;

	void setDeliveryFailureReason(const DeliveryFailureReason *);

	const DeliveryFailureReason *getDeliveryFailureReason() const;

	void setNetworkErrorCode(const NetworkErrorCode *);

	const NetworkErrorCode *getNetworkErrorCode() const;	

	const quint16 getLength() const;
};

}
}

#endif
